package com.cleaningcloud.cld.api;


import com.cleaningcloud.cld.api.factory.RemoteTaskFallbackFactory;
import com.cleaningcloud.common.core.constant.SecurityConstants;
import com.cleaningcloud.common.core.constant.ServiceNameConstants;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 云管理定时任务
 *
 * @author
 */
@FeignClient(contextId = "remoteTaskService", value = ServiceNameConstants.CLD_SERVICE, fallbackFactory = RemoteTaskFallbackFactory.class)
public interface RemoteTaskService {


    /**
     * @Author Shaw
     * @Description 员工离职
     * @date: 2025-06-18 14:04
     * @param: //TODO
     */
    @GetMapping("/task/staffResignation")
    void staffResignation(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * @Author Shaw
     * @Description 项目合同到期
     * @date: 2025-06-18 14:04
     * @param: //TODO
     */
    @RequestMapping("/task/projectContractExpiresTask")
    void projectContractExpiresTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * @Author Shaw
     * @Description 资产折旧
     * @date: 2025-06-18 14:04
     * @param: //TODO
     */
    @RequestMapping("/task/calculateAssetsDepreciationTask")
    void calculateAssetsDepreciationTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * @Author Shaw
     * @Description 项目发票生成
     * @date: 2025-06-18 14:04
     * @param: //TODO
     */
    @RequestMapping("/task/calculateProjectInvoiceTask")
    void calculateProjectInvoiceTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);


    /**
     * @Author Shaw
     * @Description 生成日历信息
     * @date: 2025-06-18 14:05
     * @param: //TODO
     */
    @RequestMapping("/task/generateCalendarTask")
    void generateCalendarTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);


    /**
     * @Author Shaw
     * @Description 初始化当日考勤记录
     * @date: 2025-06-18 14:01
     * @param: //TODO
     */
    @RequestMapping("/task/initializeAttendanceTask")
    void initializeAttendanceTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * @Author Shaw
     * @Description 每日工服扣款
     * @Description 每日保险扣款
     * @Description 每日考勤薪酬
     * @date: 2025-06-18 14:01
     * @param: //TODO
     */
    @RequestMapping("/task/dailySalaryCalculationTask")
    void dailySalaryCalculationTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);


    /**
     * @Author Shaw
     * @Description 招聘计划计算
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    @RequestMapping("/task/recruitmentPlanTask")
    void recruitmentPlanTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);


    /**
     * @Author Shaw
     * @Description 工作计划生成
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    @RequestMapping("/task/workPlanTask")
    void workPlanTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);


    /**
     * @Author Shaw
     * @Description 工作计划自动确认
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    @RequestMapping("/task/automaticConfirmTask")
    void automaticConfirmTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * @Author Shaw
     * @Description 绩效考核
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    @RequestMapping("/task/performanceAppraisalTask")
    void performanceAppraisalTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);

    /**
     * @Author Shaw
     * @Description 客户评价
     * @date: 2025-06-18 14:02
     * @param: //TODO
     */
    @RequestMapping("/task/customerEvaluateTask")
    void customerEvaluateTask(@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
